<?php
class SigespController extends AppController
{
	var $name = 'Sigesp';
	var $uses = array('Tienda','Integrador','Reporte','Postgres','PrePrecioArticulos','ReporteSql','PrecioArticulos','ArchivoPrecios','Logsql','PreArchivoPrecios');
	//var $uses = array('Usuario','Bitacora','Organizacion','Telfgasto');
	var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz','Json');
  //public $helpers = array('PhpExcel.PhpExcel'); 

	var $layout =  "ajax";
	var $components = array('Utilitario','Interfaz','Vista','Query'/*,'RequestHandler','DebugKit.Toolbar'*/);

	function beforeFilter()
	{
	  		$this->validar();
	}

	function jobs($excel=null) 
	{
		$this->permisos_menu_individual('REVISION DE JOBS');
		$this->Vista->title('Jobs del sistema SIGESP');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		if(!isset($excel))
		{
				$this->Vista->title('Movimientos de Materiales');
				echo "<script type='text/javascript'>
							document.getElementById('buscadorindex').value='BLOQUEADO';
							document.getElementById('buscadorindex').disabled = true;</script>";
		}

//$jobs=$this->Postgres->query($sql);
$usuario="jcarrizalez";
$clave="@andrea2810";
$servidor="192.168.66.11";

$archivo='.jobs.acakephp'.date('is');
$archivo2='.jobs.acakephp2'.date('is');
$salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"select jobid as id,
        jobname as nombre_job,
        -- case
        --        when jobenabled=true then 'ACTIVO'
        --else 'INACTIVO'
        --end as  
        jobenabled as status_job,
        jobcreated as creado,
        joblastrun as ultima_ejecucion,
        jobnextrun as proxima_ejecucion,
        jobdesc as descripcion
from pgagent.pga_job j order by proxima_ejecucion\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/nombre_job/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


$jobs=array();
$file = fopen("$archivo", "r") or exit("");

$c=0;
while(!feof($file))
{
	$linea=fgets($file);
	//echo $linea. "<br />";
	$linea=explode("|",$linea);

if(trim($linea[0])!=''){
  $jobs[$c]['id']=trim($linea[0]);
	$jobs[$c]['nombre_job']=trim($linea[1]);
if(trim($linea[2])=="t")$linea[2]="activo";else$linea[2]="inactivo";

	$jobs[$c]['status_job']=trim($linea[2]);
	$jobs[$c]['creado']=trim($linea[3]);
	$jobs[$c]['ultima_ejecucion']=trim($linea[4]);
	$jobs[$c]['proxima_ejecucion']=trim($linea[5]);
	$jobs[$c]['descripcion']=trim($linea[6]);
}
$c++;
}
fclose($file);
//pr($jobs);

if(file_exists($archivo)){if(unlink($archivo)){}} 


$archivo='.jobs.axcakephp'.date('is');
$archivo2='.jobs.axcakephp2'.date('is');
$salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT jlgjobid,jlgstatus from pgagent.pga_joblog WHERE jlgstart in (SELECT max(jlgstart) from pgagent.pga_joblog group by jlgjobid) order by jlgjobid
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jlgstatus/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


$jobslog=array();
$file = fopen("$archivo", "r") or exit("");

$c=0;
while(!feof($file))
{
	$linea=fgets($file);
	//echo $linea. "<br />";
	$linea=explode("|",$linea);

if(trim($linea[0])!=''){
  $jobslog[$c]['id']=trim($linea[0]);
	$jobslog[$c]['status']=trim($linea[1]);
}
$c++;
}
fclose($file);
//pr($jobslog);

if(file_exists($archivo)){if(unlink($archivo)){}} 


$array=array();

for($i=0; $i<count($jobs); $i++){

	for($j=0; $j<count($jobslog); $j++){

			if($jobs[$i]['id']==$jobslog[$j]['id']){
			//	echo $jobslog[$i]['id'].'<br>';
				$array[$i]['id']=$jobs[$i]['id'];
				$array[$i]['nombre_job']=$jobs[$i]['nombre_job'];
				$array[$i]['status_job']=$jobs[$i]['status_job'];
				$array[$i]['creado']=$jobs[$i]['creado'];
				$array[$i]['ultima_ejecucion']=$jobs[$i]['ultima_ejecucion'];
				$array[$i]['proxima_ejecucion']=$jobs[$i]['proxima_ejecucion'];
				$array[$i]['descripcion']=$jobs[$i]['descripcion'];
				$array[$i]['status']=$jobslog[$j]['status'];
			}

}




}
//pr($array);






    $this->set('data',$array);
	//	$this->set('tiendas',$tiendas);
		$this->set('busq','');
		$this->log();

	}

	public function registro_jobs($idjob=null,$nombre_job=null,$status_job=null) {

 $idjob=$this->Interfaz->id($idjob);
 $nombre_job=$this->Interfaz->id($nombre_job);
 $status_job=$this->Interfaz->id($status_job);
 $this->set('idjob',$idjob);
 $this->set('nombre_job',$nombre_job);
 $this->set('status_job',$status_job);
//echo $idjob." - ".$nombre_job." - ".$status_job;
 $this->set('div',DLOAD);
 $this->set('divlistado',DOCULTO);
 $this->set('fecha','2013-05-13');	





/////
$usuario="jcarrizalez";
$clave="@andrea2810";
$servidor="192.168.66.11";

$archivo='.jobs.bcakephp'.date('is');
$archivo2='.jobs.bcakephp2'.date('is');
$salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
select  jlgid as id,
        j.jobname as nombre_job,
        case
                when jl.jlgstatus='r' then 'EJECUTANDOSE'
                when jl.jlgstatus='s' then 'SE EJECUTO EXITOSAMENTE'
                when jl.jlgstatus='f' then 'FALLO'
                when jl.jlgstatus='d' then 'ABORTADO'
                when jl.jlgstatus='i' then 'SIN PASOS PARA EJECUTAR'
        end as status,
       -- to_char(jl.jlgstart,'YYYY-MM-DD HH:MI:SS') as inicio,
					jl.jlgstart as inicio,
        jl.jlgduration as duracion_hora_min_seg
from pgagent.pga_joblog jl,
        pgagent.pga_job j
where jl.jlgjobid=j.jobid
        and j.jobid=$idjob
				and jl.jlgstart::date between (now() - interval '10 day') and 'now()'
        --and extract(year from jl.jlgstart)=2013
        --and extract(month from jl.jlgstart)=8
        --and extract(day from jl.jlgstart)=15
order by inicio desc -- LIMIT 20
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/nombre_job/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


$jobs=array();
$file = fopen("$archivo", "r") or exit("");

$c=0;
while(!feof($file))
{
	$linea=fgets($file);
//	echo $linea. "<br />";
	$linea=explode("|",$linea);
 //id
//nombre_job
//status
//inicio
//duracion_hora_min_seg 




if(trim($linea[0])!=''){
  $jobs[$c]['id']=trim($linea[0]);
	$jobs[$c]['nombre_job']=trim($linea[1]);
//if(trim($linea[2])=="t")$linea[2]="activo";else$linea[2]="inactivo";

	$jobs[$c]['status']=trim($linea[2]);
	//$jobs[$c]['creado']=trim($linea[5]);
	$jobs[$c]['inicio']=trim($linea[3]);
	$jobs[$c]['duracion_hora_min_seg']=trim($linea[4]);
//	$jobs[$c]['descripcion']=trim($linea[6]);
}
$c++;
}
fclose($file);
//pr($jobs);


if(file_exists($archivo)){if(unlink($archivo)){}} 
///////


    $this->set('data',$jobs);
	//	$this->set('tiendas',$tiendas);
		$this->set('busq','');
		$this->log();



	}



	public function cambiar_status_jobs($idjob=null,$status_job=null){


$idjob=$this->Interfaz->id($idjob);
$status_job=$this->Interfaz->id($status_job);

//echo $idjob;//.' - '.$status_job;



$usuario="jcarrizalez";
$clave="@andrea2810";
$servidor="192.168.66.11";



/// consulta
$archivo='.jobs.ccakephp'.date('is');
$archivo2='.jobs.ccakephp2'.date('is');
$salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT  jobid,jobname, jobenabled FROM pgagent.pga_job WHERE jobid='$idjob';
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jobenabled/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


$jobs=array();
$file = fopen("$archivo", "r") or exit("");

$c=0;
while(!feof($file))
{
	$linea=fgets($file);
//	echo $linea. "<br />";
	$linea=explode("|",$linea);


if(trim($linea[0])!=''){
	$jobs[$c]['jobenabled']=trim($linea[2]);
}
$c++;
}
fclose($file);
//pr($jobs);
if(file_exists($archivo)){if(unlink($archivo)){}} 
/// consulta
$archivo='.jobs.xcakephp'.date('is');
if($jobs[0]['jobenabled']=='t'){
$cond=1;

$salida = shell_exec("export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
UPDATE pgagent.pga_job SET jobenabled=false WHERE jobid='$idjob'\" \"postgres\" > $archivo;");
if(file_exists($archivo)){if(unlink($archivo)){}} 
}
else{
$cond=0;

$salida = shell_exec("export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
UPDATE pgagent.pga_job SET jobenabled=true WHERE jobid='$idjob'\" \"postgres\" > $archivo;");
if(file_exists($archivo)){if(unlink($archivo)){}} 
}



		$this->set('cond',$cond);

  }




public function jobs_error($idjob=null,$nombre_job=null) {

 $idjob=$this->Interfaz->id($idjob);
 $nombre_job=$this->Interfaz->id($nombre_job);
 
 $this->set('idjob',$idjob);
 $this->set('nombre_job',$nombre_job);

 $this->set('div',DLOAD);
 $this->set('divlistado',DOCULTO);





/////
$usuario="jcarrizalez";
$clave="@andrea2810";
$servidor="192.168.66.11";

$archivo='.jobs.bxcakephp'.date('is');
$archivo2='.jobs.bxcakephp2'.date('is');
$salida = shell_exec("echo '' > $archivo;export PGPASSWORD='$clave';psql -h $servidor -p 5432 -U \"$usuario\" -c \"
SELECT  jsloutput FROM pgagent.pga_jobsteplog WHERE jsljlgid='$idjob'
\" \"postgres\" >> $archivo;
sed '/---+---/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/jsloutput/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/rows)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/row)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/filas)/d' $archivo > $archivo2;mv $archivo2 $archivo;
sed '/^$/d' $archivo > $archivo2;mv $archivo2 $archivo;
  
");


$jobserror=array();
$file = fopen("$archivo", "r") or exit("");

$c=0;
while(!feof($file))
{
	$linea=fgets($file);

	$linea=explode("xcxxxxxcddd",$linea);

if(trim($linea[0])!=''){
  $jobserror[$c]['jsloutput']=trim($linea[0]);
}
$c++;
}
fclose($file);
//pr($jobserror);


if(file_exists($archivo)){if(unlink($archivo)){}} 

    $this->set('data',$jobserror);
	//	$this->set('tiendas',$tiendas);
		$this->set('busq','');
		$this->log();



	}

















	function cierre_de_caja() 
	{
		$this->permisos_menu_individual('cierres de cajas'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Cierre de Caja');
		echo "<script type='text/javascript'>
			document.getElementById('buscadorindex').value='BLOQUEADO';
			document.getElementById('buscadorindex').disabled = true;
			</script>";
	}

	public function correlativos_caja() {
		$this->permisos_menu_individual('CORRELATIVOS DE CAJA'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado  de Correlativos de Caja');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

	}

	public function filtrado_correlativos_caja($div='vista',$divlistado='vista') 
	{	
		$this->Vista->title('Listado con Filtro de Correlativos');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		 $this->set('div',$div);
		 $this->set('divlistado',$divlistado);
		 $tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));

			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) {
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);


	}

	public function listado_filtrado_correlativos_caja()
	{


			extract($this->request->data);
			$id_ven=$this->request->data['vent'];

	//		pr($this->request->data);

		$this->Vista->title('Listado con Filtro de Correlativos');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";


		$sql=$this->Query->correlativos_caja();
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
		if(in_array('TODOS',$this->request->data['tienda'])){

			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
   		    		
			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else{

			$array=$this->request->data['tienda'];
		}

		$data=$this->Query->app('Sigesp',$array,$sql);


		if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);


		//pr($data);

		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
		$this->log();


	}






	function movimiento_de_materiales($excel=null) 
	{
		$this->permisos_menu_individual('Movimientos de Materiales'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Movimiento de Materiales');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		if(!isset($excel))
		{
				$this->Vista->title('Movimientos de Materiales');
				echo "<script type='text/javascript'>
							document.getElementById('buscadorindex').value='BLOQUEADO';
							document.getElementById('buscadorindex').disabled = true;</script>";
		}


		$sql=$this->Query->movimiento_de_materiales();
		$array=array('integrador');
		//$data=$this->Query->app('Integrador',$array,$sql);


		$array=$this->Integrador->query($sql);

		$data=array(); 
		$tiendas=array(); 
		$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus"=>1,	"Tienda.central"=>0)));
        $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));


//$this->pr($array);
		for($i=0; $i<count($array); $i++){
			
				/*	
					for($z=0; $z<count($array[$i]); $z++){		
					$array[$i][$z]['nombre']=$tienda[$array[$i][$z]['cenrec']];
					$data[]=$array[$i][$z];
					}
*/
						$array[$i][0]['nombre']=$tienda[$array[$i][0]['cenrec']];
						$data[]=$array[$i][0];
		}

	 //    pr($tienda);
    $this->set('data',$data);
		$this->set('tiendas',$tiendas);
		$this->set('busq','');
		$this->log();

	}


	public function movimiento_de_materiales_ver($tien=null,$fecha=null) 
	{

		 $this->set('div',DLOAD);
		 $this->set('divlistado',DOCULTO);
		
      	 $tien=$this->Interfaz->id($tien);
		 $fecha=$this->Interfaz->id($fecha);

		$sql=$this->Query->movimiento_de_materiales_individual($tien,$fecha);
		$array=array('integrador');
		$array=$this->Integrador->query($sql);
		$data=array(); 
		$tiendas=array(); 
		$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus"=>1,	"Tienda.central"=>0)));
        $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));

		for($i=0; $i<count($array); $i++){
			
						$array[$i][0]['nombre']=$tienda[$array[$i][0]['cenrec']];
						$data[]=$array[$i][0];
		}

	    pr($data);
   		$this->set('data',$data);
		$this->set('tiendas',$tiendas);




		 $this->set('tienda',$tien);
		 $this->set('fecha',$fecha);



	}

	public function movimientos_bloquear_material($nrodoc=null, $codart=null,$tienda=null, $fecha=null) {


	$nrodoc=$this->Interfaz->id($nrodoc);
  $codart=$this->Interfaz->id($codart);
	$tiendaxc=$this->Interfaz->id($tienda);
  $fecha=$this->Interfaz->id($fecha);
/*
echo 				$nrodoc;
echo '<br>'.$codart;
echo '<br>'.$tienda;
echo '<br>'.$fecha;
*/
		$sql=$this->Query->select_movimiento_de_materiales_individual_estatus($nrodoc,$codart,$tiendaxc,$fecha);
		$array=array('integrador');
		$array=$this->Integrador->query($sql);
		$data=array(); 
		$tiendas=array(); 
		$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus"=>1,	"Tienda.central"=>0)));
    $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));

		for($i=0; $i<count($array); $i++){
			
						$array[$i][0]['nombre']=$tienda[$array[$i][0]['cenrec']];
						$data[]=$array[$i][0];
		}

	 //  pr($data);
//echo $data[0]['stareg'];
     if($data[0]['stareg']=='N'){
		$sql=$this->Query->update_movimiento_de_materiales_individual_estatus($nrodoc,$codart,$tiendaxc,$fecha,'B');
		$array=array('integrador');
		$array=$this->Integrador->query($sql);

 		 $imagen='si';
		 }
     if($data[0]['stareg']=='B'){
		$sql=$this->Query->update_movimiento_de_materiales_individual_estatus($nrodoc,$codart,$tiendaxc,$fecha,'N');
		$array=array('integrador');
		$array=$this->Integrador->query($sql);
 		 $imagen='no';

		 }
//echo 		 $imagen;
		 $this->set('imagen',$imagen);




	}





	public function filtrado_cierre_de_caja($div='vista',$divlistado='vista') 
	{	
		$this->Vista->title('Listado con Filtro de Cierre de Caja');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		 $this->set('div',$div);
		 $this->set('divlistado',$divlistado);
		//	$tiendas=$this->Tienda->find('all',array('Tienda.estatus'=>'1','Tienda.central'=>'0','order'=>'Tienda.codigo Asc'));

		 $tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
     //   $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.nombre', 'Tienda.codigo'), 'order'=>'Tienda.id Asc'));


			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) {
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);
			

	}


                    
	public function listado_filtrado_cierre_de_caja() 
	{


			extract($this->request->data);
			$id_ven=$this->request->data['vent'];
			$fi=$this->request->data['fecha_i'];
			$vfi=$$fi;
			$ff=$this->request->data['fecha_f'];
			$vff=$$ff;

	//		pr($this->request->data);

		$this->Vista->title('Listado con Filtro de Cierre de Caja');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		if(empty($vfi) and empty($vff)){
			$vfi=date('Y-m-d');	
			$vff=date('Y-m-d');
		}
		else if(!empty($vfi) and empty($vff)){
			$vfi=$this->Utilitario->guar_fecha($vfi);
			$vff=$vfi;
		}
		else if(empty($vfi) and !empty($vff)){
			$vff=$this->Utilitario->guar_fecha($vff);
			$vfi=$vff;	
		}
		else{
			if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
			{
				$a_=$vfi;
			 	$vfi=$this->Utilitario->guar_fecha($vff);
				$vff=$this->Utilitario->guar_fecha($a_);
			}else{
				$vfi=$this->Utilitario->guar_fecha($vfi);
				$vff=$this->Utilitario->guar_fecha($vff);
			}	
		}
		$sql=$this->Query->cierres_detallado($vfi,$vff);

		if(in_array('TODOS',$this->request->data['tienda'])){

			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
					

			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
		
			}
		}
		else{

			$array=$this->request->data['tienda'];
		}

		$data=$this->Query->app('Sigesp',$array,$sql);
		if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);
		$this->set('data',$data);
		$this->set('busq','');
		$this->log();


	}









	public function nuevo($div='vista',$divlistado='vista',$id=null) 
	{	
			if(isset($id))
			{
					$per=$this->Interfaz->id($id);
					$this->set('periodo',$this->Periodo->find('first',array('conditions'=> array("Periodo.id"=>$per))));
			}
			$this->set('div',$div);
			$this->set('divlistado',$divlistado);

	}





	function busqueda_filtros($nombrebuscar=null,$vfibuscar=null, $vffbuscar=null) 
	{
			$this->Vista->title('Listado de Periodos Filtrado');
			$condiciones=array();
			if(!empty($nombrebuscar)) $condiciones['UPPER(Periodo.nombre) like ']='%'.$nombrebuscar.'%';
			if(!empty($vfibuscar) and !empty($vffbuscar)) $condiciones['Periodo.desde between ? and ?']=array($vfibuscar,$vffbuscar);
			else if(!empty($vfibuscar) and empty($vffbuscar)) $condiciones['Periodo.desde between ? and ?']=array($vfibuscar,$vfibuscar);
			else if(empty($vfibuscar) and !empty($vffbuscar)) $condiciones['Periodo.hasta between ? and ?']=array($vffbuscar,$vffbuscar);
		 	$data=$this->Periodo->find('all',array("conditions"=>$condiciones));
			$this->set('data',$data);
			$this->log();
			return count($data);
	}

	public function guardarnuevo() 
	{
			extract($this->request->data);
			$id_ven=$this->request->data['vent'];
			$fi=$this->request->data['fecha_i'];
			$vfi=$$fi;
			$ff=$this->request->data['fecha_f'];
			$vff=$$ff;
			$data=$this->Interfaz->data($this->request->data);			
			if($this->Vista->empyt($data))
			{
			    $this->Vista->mensaje('Faltan datos Basicos Para Registrar Periodos','ERROR');
			}
			else if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
			{
					$this->Vista->monta_imagem($fi,'Fecha Invalida');
			   	$this->Vista->mensaje('La fecha de Inicio no Puede ser Posterior a la fecha de Fin','ERROR');
			}
			else 
			{
					
					if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi))<0)
					{
							$estatus=2;
					}
					else
					{
							$estatus=1;
					}
					if(isset($data['id'])){ $datos['Periodo']['id']=$this->Interfaz->id($data['id']);$msj="Periodo Modificado Exitosamente"; $tipo="Exito";}
					else{ $msj="Periodo Registrado Exitosamente"; $tipo="Exito";}
					$datos['Periodo']['nombre']=$data['nombre'];
					$datos['Periodo']['desde']=$this->Utilitario->guar_fecha($vfi);
					$datos['Periodo']['hasta']=$this->Utilitario->guar_fecha($vff);
					$datos['Periodo']['estatus']=$estatus;

					if($this->Periodo->save($datos))
					{
							$this->Vista->mensaje($msj,$tipo);
							$this->Vista->cerrar_ventana($id_ven);
					}
					else
					{
							$this->Vista->mensaje("Ha Ocurrido un Error Intente Nuevamente","Error");
					}
					$this->log();
			}
			
			$this->listado();
			$this->render('listado');
	}

	
	public function excel_movimientos($tipo=1,$busq=null) 
	{



			$this->set('tipo',$tipo);
			$sql=$this->Query->movimiento_de_materiales();
			$array=array('integrador');
			$array=$this->Integrador->query($sql);
			$data=array();
			$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus"=>1,	"Tienda.central"=>0)));
           $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));

			for($i=0; $i<count($array); $i++)
			{
						$array[$i][0]['nombre']=$tienda[$array[$i][0]['cenrec']];
						$data[]=$array[$i][0];

				//	for($z=0; $z<count($array[$i]); $z++)
				//	{		
							//$array[$i][$z]['nombre']=$tienda[$array[$i][$z]['cenrec']];
							//$data[]=$array[$i][$z];
				//	}
			}
    	$this->set('data',$data);
			$this->render('reporte_excel_movimiento_de_materiales');
  }



	function facturas_no_procesadas() 
	{
		$this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
	}

	public function filtrado_facturas_no_procesadas($div='vista',$divlistado='vista') 
	{	
		$this->Vista->title('Listado con Filtro de Facturas No Procesadas');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		 $this->set('div',$div);
		 $this->set('divlistado',$divlistado);
		//	$tiendas=$this->Tienda->find('all',array('Tienda.estatus'=>'1','Tienda.central'=>'0','order'=>'Tienda.codigo Asc'));

		 $tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
     //   $tienda=$this->Tienda->find('list', array('fields'=> array('Tienda.nombre', 'Tienda.codigo'), 'order'=>'Tienda.id Asc'));


			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) {
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);
			

	}


                    
	public function listado_filtrado_facturas_no_procesadas() 
	{
			extract($this->request->data);
			$id_ven=$this->request->data['vent'];

		//	pr($this->request->data);

		$this->Vista->title('Listado con Filtro de Facturas No Procesadas');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";


$documentos=$this->request->data['documentos'];


$documentos = nl2br(ucfirst($documentos)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>


$documentos = explode('<br />',$documentos);

//echo count($documentos);




 
    		$sql='';
			for($t=0; $t<count($documentos); $t++){
				$docum = explode('-',$documentos[$t]);
				if(!isset($docum[1]))$docum[1]='';

				$docu = trim($docum[0]);
				$tien = trim($docum[1]);
				$fact = substr($docum[0],3,7);

				if(!empty($tien)){
						if((count($documentos)-1)==$t)
							$sql.=$this->Query->facturas_no_procesadas($fact,$tien);
						else
							$sql.=$this->Query->facturas_no_procesadas($fact,$tien).' union ';
				}

			}
//		echo $sql;



		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));		
		if(in_array('TODOS',$this->request->data['tienda'])){

			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));


			$array=array();

			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
		
			}
		}
		else{

			$array=$this->request->data['tienda'];
		}
		if(!empty($sql))
		$data=$this->Query->app('Sigesp',$array,$sql);
		else
		$data=null;

	//pr($data);



	//	if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);
		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
		//$this->log();


	}

	public function apertura_cierre_mes() {
		$this->permisos_menu_individual('APERTURA y CIERRE DE MES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Apertura y Cierre de Mes');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
	}

	public function filtrado_apertura_cierre_mes() {
		$this->Vista->title('Listado con Filtro de Apertura y Cierre de Mes');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
		 $this->set('div',DVENTANA);
		 $this->set('divlistado',DLOAD);
		 $tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
		$tienda=array();
		$tienda['TODOS']='Todas las Tiendas';
		foreach ($tiendas as $key => $value) {
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
		}
		$this->set('tienda',$tienda);
	}

	public function listado_filtrado_apertura_cierre_mes() {
		$this->permisos_menu_individual('APERTURA y CIERRE DE MES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		extract($this->request->data);
		$id_ven=$this->request->data['vent'];
		$this->Vista->title('Listado de Apertura y Cierre de Mes');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
  		$sql=$this->Query->apertura_cierre_mes();
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
		if(in_array('TODOS',$this->request->data['tienda'])){
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else{
			$array=$this->request->data['tienda'];
		}

		$data=$this->Query->app('Sigesp',$array,$sql);
		if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);
		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
	}


	public function cambiar_status_apertura_mes($codtiend=null,$mes=null,$cond=null){

		 $codtiend=$this->Interfaz->id($codtiend);
$mesac=date('m');
$mesacx=($mesac*1);

if($mes>$mesac and $mesacx!=1){
		 $this->Vista->mensaje('No se Pueden Habilitar meses superiores al actual','ERROR');
		 if($cond=='si')$datax[0]['mes']=0;else$datax[0]['mes']=1;

}
else if($mes>$mesac and $mes!=12){
		 $this->Vista->mensaje('No se Pueden Habilitar meses superiores al actual','ERROR');
		 if($cond=='si')$datax[0]['mes']=0;else$datax[0]['mes']=1;

}
else{
    $array=array($codtiend);
    $sqlb=$this->Query->apertura_cierre_mes($mes);
		$datax=$this->Query->app('Sigesp',$array,$sqlb);


    if($datax[0]['mes']===1)$vdf=0;else$vdf=1;

    $sql=$this->Query->update_apertura_cierre_mes($mes,$vdf);
		$data=$this->Query->app('Sigesp',$array,$sql);
		if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);

}
		$this->set('codtiend',$codtiend);
		$this->set('mes',$mes);
		$this->set('cond',$datax[0]['mes']);


  }

















	public function reporte_de_ventas() {

		$this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Reporte de Ventas');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";
		$data=array(); 
		$tiendas=array();
	    $this->set('data',$data);
		$this->set('tiendas',$tiendas);
		$this->set('busq','');

	}


	public function filtrado_reporte_de_ventas() {

		$this->Vista->title('Listado con Filtro de Facturas No Procesadas');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		 $this->set('div',DVENTANA);
		 $this->set('divlistado',DLOAD);

		 $tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));

			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) {
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);

	}
	public function listado_filtrado_reporte_de_ventas() 
	{
		$this->permisos_menu_individual('FACTURAS NO PROCESADAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		extract($this->request->data);
		$id_ven=$this->request->data['vent'];
		$fi=$this->request->data['fecha_i'];
		$vfi=$$fi;
		$ff=$this->request->data['fecha_f'];
		$vff=$$ff;
		$this->Vista->title('Listado con Filtro de Reporte de Ventas');
		echo "<script type='text/javascript'>document.getElementById('buscadorindex').value='BLOQUEADO';
		document.getElementById('buscadorindex').disabled = true;</script>";

		if(empty($vfi) and empty($vff)){
			$vfi=date('Y-m-d');	
			$vff=date('Y-m-d');
		}
		else if(!empty($vfi) and empty($vff)){
			$vfi=$this->Utilitario->guar_fecha($vfi);
			$vff=$vfi;
		}
		else if(empty($vfi) and !empty($vff)){
			$vff=$this->Utilitario->guar_fecha($vff);
			$vfi=$vff;	
		}
		else{
			if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
			{
				$a_=$vfi;
			 	$vfi=$this->Utilitario->guar_fecha($vff);
				$vff=$this->Utilitario->guar_fecha($a_);
			}else{
				$vfi=$this->Utilitario->guar_fecha($vfi);
				$vff=$this->Utilitario->guar_fecha($vff);
			}	
		}

		$fpago=$this->request->data['fpago'];
		$material=$this->request->data['material'];
		$nfactura=$this->request->data['nfactura'];
		$mfactura=$this->request->data['mfactura'];

	//	$sql=$this->Query->reporte_de_ventas($vfi,$vff);
		$sql=$this->Query->reporte_de_ventas($vfi,$vff,$fpago,$material,$nfactura,$mfactura,$blanco,$numinst);
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
		if(in_array('TODOS',$this->request->data['tienda'])){
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else{

			$array=$this->request->data['tienda'];
		}

		$data=$this->Query->app('Sigesp',$array,$sql);
		if(count($data)>0)$this->Vista->cerrar_ventana($id_ven);
		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
	//	$this->log();
	}

	function buscar_cheques()
	{
		$this->permisos_menu_individual('BUSCAR CHEQUES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Cheques');
		$this->bloquear_buscador();
	}

	function filtrado_cheques($div='vista',$divlistado='vista') 
	{	
			$this->Vista->title('Listado con Filtro de Movimientos Duplicados');
		 	$this->set('div',$div);
		 	$this->set('divlistado',$divlistado);
			$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) 
			{
					$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);
	}

	function listado_filtrado_cheques()
	{
		$this->permisos_menu_individual('BUSCAR CHEQUES'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		extract($this->request->data);
		$id_ven=$this->request->data['vent'];
		$fi=$this->request->data['fecha_i'];
		$vfi=$$fi;
		$ff=$this->request->data['fecha_f'];
		$vff=$$ff;
		$monto=$dmonto;
		$fpago=$vfpago;
		$this->Vista->title('Listado de Cheques Encontrados');
		$documentos=$this->request->data['documentos'];
		$documentos = nl2br(ucfirst($documentos)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
		$documentos = explode('<br />',$documentos);
		if(count($documentos)>0) $cheques='';
		else $cheques=null;
		if(count($documentos)>2)
		{
			for($t=0; $t<count($documentos); $t++)
			{
				$docum = $documentos[$t];
				if((count($documentos)-1)==$t) $cheques.="a.numinst like '%$docum%'";//$cheques.="nro_documento like '%$docum%'";
				else $cheques.="a.numinst like '%$docum%' or ";//$cheques.="nro_documento like '%$docum%' or ";
			}
		}
		else
		{
			if($documentos[0]!='')
			{
				for($t=0; $t<count($documentos); $t++)
				{
					$docum = $documentos[$t];
					if((count($documentos)-1)==$t) $cheques.="a.numinst like '%$docum%'";//$cheques.="nro_documento like '%$docum%'";
					else $cheques.="a.numinst like '%$docum%' or ";//$cheques.="nro_documento like '%$docum%' or ";
				}
			}
			else $cheques=null;
		}
		

		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));		
		if(in_array('TODOS',$this->request->data['tienda']))
		{
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
			$array=array();
			for($z=0; $z<count($tienda); $z++)
			{
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else
		{
			$array=$this->request->data['tienda'];
		}

		if(empty($vfi) and empty($vff))
		{
			$vfi=null;	
			$vff=null;
		}
		else if(!empty($vfi) and empty($vff)){
			$vfi=$this->Utilitario->guar_fecha($vfi);
			$vff=$vfi;
		}
		else if(empty($vfi) and !empty($vff)){
			$vff=$this->Utilitario->guar_fecha($vff);
			$vfi=$vff;	
		}
		else
		{
			if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
			{
				$a_=$vfi;
			 	$vfi=$this->Utilitario->guar_fecha($vff);
				$vff=$this->Utilitario->guar_fecha($a_);
			}
			else{
				$vfi=$this->Utilitario->guar_fecha($vfi);
				$vff=$this->Utilitario->guar_fecha($vff);
			}	
		}
		if(!isset($monto))$monto=null;
		else $monto=str_replace(',', '.', $monto=str_replace('.', '', $monto));
		if(!isset($fpago))$fpago=null;
		echo $monto;
		$sql=$this->Query->busqueda_cheques($vfi,$vff,$monto,$fpago,$cheques);
		$data=$this->Query->app('Sigesp',$array,$sql);
		//$data=null;

		if(count($data)>0) $this->Vista->cerrar_ventana($id_ven);
		if(count($data)>MAX_PAGI) $mos=MAX_PAGI;
		else $mos=count($data);
		$this->Vista->title('Listado de Cheques Encontrados (Mostrando '.$mos.' de '.count($data).' Registros Encontrados)');

		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
		
	}

	function movimientos_duplicados() 
	{
		$this->permisos_menu_individual('MOVIMIENTOS DUPLICADOS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Cheques');
		$this->bloquear_buscador();

	}

	public function filtrado_movimientos_duplicados($div='vista',$divlistado='vista') 
	{	
			$this->Vista->title('Listado con Filtro de Movimientos Duplicados');
		 	$this->set('div',$div);
		 	$this->set('divlistado',$divlistado);
			$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
			$tienda=array();
			$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) 
			{
				$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);
	}


	public function listado_filtrado_movimientos_duplicados() 
	{
		$this->permisos_menu_individual('MOVIMIENTOS DUPLICADOS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
			$compactada=$this->serializador($this->request->data,2); //2 serializa el arreglo
			
			$this->set('opciones',$compactada);

			extract($this->request->data);
			$id_ven=$this->request->data['vent'];
			$fi=$this->request->data['fecha_i'];
			$vfi=$$fi;
			$ff=$this->request->data['fecha_f'];
			$vff=$$ff;
			$this->Vista->title('Listado con Movimientos Duplicados');
		
			if(empty($vfi) and empty($vff))
			{
					$vfi=date('Y-m-d');	
					$vff=date('Y-m-d');
			}
			else if(!empty($vfi) and empty($vff))
			{
					$vfi=$this->Utilitario->guar_fecha($vfi);
					$vff=$vfi;
			}
			else if(empty($vfi) and !empty($vff))
			{
					$vff=$this->Utilitario->guar_fecha($vff);
					$vfi=$vff;	
			}
			else
			{
					if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
					{
							$a_=$vfi;
			 				$vfi=$this->Utilitario->guar_fecha($vff);
							$vff=$this->Utilitario->guar_fecha($a_);
					}
					else
					{
							$vfi=$this->Utilitario->guar_fecha($vfi);
							$vff=$this->Utilitario->guar_fecha($vff);
					}	
			}
			$sql=$this->Query->movimientos_duplicados($vfi,$vff);

			if(in_array('TODOS',$this->request->data['tienda']))
			{
					$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
					$array=array();
					for($z=0; $z<count($tienda); $z++)
					{
							$array[]=$tienda[$z]['Tienda']['codigo'];
					}
			}
			else
			{
					$array=$this->request->data['tienda'];
			}
      $tiendas=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
			$this->set('tienda',$tiendas);

			$data=$this->Query->app('Sigesp',$array,$sql);
			if(count($data)>0) $this->Vista->cerrar_ventana($id_ven);

			$this->set('data',$data);
			$this->set('busq','');
			$this->log();

			//pr($tiendas);


	}

	public function reporte_excel_filtrado_movimientos_duplicados($tipo,$opciones) 
	{
		$this->set('tipo',$tipo);
      	$this->request->data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
		if(is_array($this->request->data))
		{
			extract($this->request->data);
			$id_ven=$this->request->data['vent'];
			$fi=$this->request->data['fecha_i'];
			$vfi=$$fi;
			$ff=$this->request->data['fecha_f'];
			$vff=$$ff;
			if(empty($vfi) and empty($vff))
			{
				$vfi=date('Y-m-d');	
				$vff=date('Y-m-d');
			}
			else if(!empty($vfi) and empty($vff))
			{
				$vfi=$this->Utilitario->guar_fecha($vfi);
				$vff=$vfi;
			}
			else if(empty($vfi) and !empty($vff))
			{
				$vff=$this->Utilitario->guar_fecha($vff);
				$vfi=$vff;	
			}
			else
			{
				if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0)
				{
					$a_=$vfi;
					$vfi=$this->Utilitario->guar_fecha($vff);
					$vff=$this->Utilitario->guar_fecha($a_);
				}
				else
				{
					$vfi=$this->Utilitario->guar_fecha($vfi);
					$vff=$this->Utilitario->guar_fecha($vff);
				}	
			}
			$sql=$this->Query->movimientos_duplicados($vfi,$vff);
			if(in_array('TODOS',$this->request->data['tienda']))
			{
				$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
				$array=array();
				for($z=0; $z<count($tienda); $z++)
				{
					$array[]=$tienda[$z]['Tienda']['codigo'];
				}
			}
			else
			{
				$array=$this->request->data['tienda'];
			}
		  	$tiendas=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));
			$this->set('tienda',$tiendas);
			$data=$this->Query->app('Sigesp',$array,$sql);
			$this->set('data',$data);
		}
		else
		{
			echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
		}
	}

	
	

	function buscar_inventario()
	{
		$this->permisos_menu_individual('BUSQUEDA DE INVENTARIO'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Inventarios');
		$this->bloquear_buscador();
	}
	function filtrado_inventario($div='vista',$divlistado='vista') 
	{	
		//$this->Vista->title('Listado con Filtro de Inventarios');
		$this->Session->delete('opciones_inventario');
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
		$tienda=array();
		//$tienda['TODOS']='Todas las Tiendas';
		foreach ($tiendas as $key => $value) 
		{
			$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
		}
		$this->set('tienda',$tienda);
	}

	function listado_filtrado_inventario()
	{
		$this->Session->write('opciones_inventario',$this->serializador($this->request->data,2));
		$compactada=$this->serializador($this->request->data,2); //2 serializa el arreglo
		$this->set('opciones',$compactada);
		$this->Vista->mensaje('Reporte Disponible','Exito');
		/*extract($this->request->data);
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));		
		if(in_array('TODOS',$this->request->data['tienda']))
		{
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
			$array=array();
			for($z=0; $z<count($tienda); $z++)
			{
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else
		{
			$array=$this->request->data['tienda'];
		}
		if(count($array)>20)
		{
			$final=array();
			for($z=0; $z<20; $z++)
			{
				$final[]=$array[$z];
			}
		}
		else $final=$array;
		$sql=$this->Query->busca_inventario();
		$data=$this->Query->app('Sigesp',$final,$sql);
		//$data=$this->Query->app_tienda('Sigesp',$array,$sql);

		if(count($data)>0) $this->Vista->cerrar_ventana($vent);
		if(count($data)>MAX_PAGI) $mos=MAX_PAGI;
		else $mos=count($data);
		$this->Vista->title('Listado de Materiales Encontrados (Mostrando de '.$mos.' de '.count($data).' Registros Encontrados)');
		//print_r($data);
		$this->set('tienda',$td);
		$this->set('data',$data);
		$this->set('busq','');
		*/
	}

	public function reporte_excel_listado_filtrado_inventario($tipo,$opciones=null) 
	{
		$this->set('tipo',$tipo);
		//$this->request->data=$this->serializador($opciones,1); //1 convierte la cadena serializada en un arreglo
		$this->request->data=$this->serializador($this->Session->read('opciones_inventario'),1); //1 convierte la cadena serializada en un arreglo
		if(is_array($this->request->data))
		{
			extract($this->request->data);
			$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));		
			if(in_array('TODOS',$this->request->data['tienda']))
			{
				$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
				$array=array();
				for($z=0; $z<count($tienda); $z++)
				{
					$array[]=$tienda[$z]['Tienda']['codigo'];
				}
			}
			else
			{
				$array=$this->request->data['tienda'];
			}
			/*if(count($array)>20)
			{
				$final=array();
				for($z=0; $z<20; $z++)
				{
					$final[]=$array[$z];
				}
				$array=null;
				$array=$final;
			}*/
			//else $final=$array;
			$sql=$this->Query->busca_inventario();
			$data=$this->Query->app_tienda('Sigesp',$array,$sql);

	    	$region=$this->Reporte->regiones('desreg');
      		$estado=$this->Reporte->regiones('desest');
			$nombrex=$this->Reporte->regiones('dentie');


			$this->set('nombrex',$nombrex);
			$this->set('estado',$estado);
			$this->set('region',$region);
			$this->set('tienda',$td);
			$this->set('data',$data);
			$this->set('tbuscar',$array);
		}
		else
		{
			echo "ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA";
		}
	}

	function correlativo_factura()
	{
		$this->permisos_menu_individual('CORRELATIVOS DE FACTURAS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
		$this->Vista->title('Listado de Facturas');
		$this->bloquear_buscador();
	}

	function filtrado_correlativo_factura($div='vista',$divlistado='vista') 
	{	
			$this->Vista->title('Listado con Filtro de Facturas a Modificar');
		 	$this->set('div',$div);
		 	$this->set('divlistado',$divlistado);
			$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
			$tienda=array();
			//$tienda['TODOS']='Todas las Tiendas';
			foreach ($tiendas as $key => $value) 
			{
					$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
			}
			$this->set('tienda',$tienda);
	}

	function listado_filtrado_correlativo_factura()
	{
		extract($this->request->data);

//pr($this->request->data);


$this->Vista->title('Listado de Facturas a Modificar');

if(empty($facturas) or empty($ncontrol)){
		$this->Vista->mensaje('Indique al menos una Factura y numero de control','ERROR');
		$this->set('tienda',null);	
		$this->set('data',null);
		$this->set('busq','');

}else{
$ncontrolcatfn=explode("\n",$ncontrol);
$facturascatfn=explode("\n",$facturas);
$facturascatfn=count($facturascatfn);
$ncontrolcatfn=count($ncontrolcatfn);

$confts=true;
for($i=0; $i<count($facturascatfn); $i++){

if(is_numeric($facturascatfn[$i]))$confts=false;
//if($facturascatfn[$i]==''){unset($facturascatfn[$i]);}

}
/*
for($i=0; $i<count($ncontrolcatfn); $i++){

//if($ncontrolcatfn[$i]==''){unset($ncontrolcatfn[$i]);}

}
*/









if($confts==true){

if($facturascatfn!=$ncontrolcatfn){
		$this->set('tienda',null);	
		$this->set('data',null);
		$this->set('busq','');
		$this->Vista->mensaje("<font color=\"red\"><b>$facturascatfn Lineas</b></font> Cant. 	Numero Factura 	!= <font color=\"red\"><b>$ncontrolcatfn Lineas</b></font> Catn.	Numero Control",'ERROR');

}else{


		$facturas = nl2br(ucfirst($facturas)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
		$facturas = explode('<br />',$facturas);

		$canfact=count($facturas);


		if(count($facturas)>0) $facturas_='';
		else $facturas_=null;

		$ncontrol = nl2br(ucfirst($ncontrol)); //Transforma todos los saltos de linea en tag &lt;br/&gt;<br>
		$ncontrol = explode('<br />',$ncontrol);

		$canncon=count($ncontrol);
		for($t=0; $t<count($facturas); $t++)
		{
     $nf=null;

			if(isset($facturas[$t]) && trim($facturas[$t])!="" )
			{
			$nf=explode('-',trim($facturas[$t]));
if(!isset($nf[1]))$nf[1]='';

			$nfl='FAC-'.$nf[0].$this->Interfaz->item($nf[1],18);
			$nuevos[$nfl]=$nf[0].'-'.$this->Interfaz->item(trim($ncontrol[$t]),18);
			$nfl='DEV-'.$nf[0].$this->Interfaz->item($nf[1],18);
			$nuevos[$nfl]=$nf[0].'-'.$this->Interfaz->item(trim($ncontrol[$t]),18);
			$nfl='ANL-'.$nf[0].$this->Interfaz->item($nf[1],18);
			$nuevos[$nfl]=$nf[0].'-'.$this->Interfaz->item(trim($ncontrol[$t]),18);
			}
		}

		if(count($ncontrol)>0) $ncontrol_='';
		else $ncontrol_=null;
//echo $canfact."===".$canncon;
		if($canfact===$canncon){

$sqla='select codtiend,numfac,monto,numcon,codusu,fecemi from sfc_factura as a where ';

		if(count($facturas)>0)
		{
			for($t=0; $t<count($facturas); $t++)
			{
				$factur = trim($facturas[$t]);
				$factur = str_replace("-","%",trim($factur));
if($factur!=""){
				if((count($facturas)-1)==$t) $sqla.="a.numfac like '%".trim($factur)."%'";
				else $sqla.="a.numfac like '%".trim($factur)."%' or ";
}else{
$sqla.="a.numfac like '%RETURNNEGATIVO%'";
}

			}

 $sqla=$sqla." ORDER BY a.fecemi,a.numfac ASC";
		}

		$array=$tienda;


		//$sql=$this->Query->busqueda_cheques($vfi,$vff,$monto,$fpago,$cheques);

    if($sqla=='select codtiend,numfac,monto,numcon,codusu,fecemi from sfc_factura as a where '){
		$this->Vista->mensaje('Registros no encontrados Verificar la tienda','ERROR');

	$td=null;	
	$data=null;

}else{		$data=$this->Query->app('Sigesp',$array,$sqla);
}

$sqlb=array();

for($t=0; $t<count($data); $t++)
			{
				$ncont = trim($ncontrol[$t]);
/*if($ncont!=""){
$data[$t]['nuevo']=$ncont;
}*/
$index=trim($data[$t]['numfac']);
$data[$t]['nuevo']=$nuevos[$index];

			}
$this->Vista->title("Resultado: Facturas Buscadas <font color=\"red\">\"$canfact\"</font> - Facturas Encontradas <font color=\"red\">\"".count($data)."\"</font>");



		//$data=null;
$id_ven=$vent;
	//	if(count($data)>0) $this->Vista->cerrar_ventana($id_ven);


//pr($data);


		}
		else{
			    $this->Vista->mensaje('Error en datos, Posiblemente se tenga un ENTER','ERROR');	
		}

		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));	
			
		$this->set('tienda',$td);	
		$this->set('data',$data);
		$this->set('busq','');
	}
	}else{
		$this->set('tienda',array('',''));	
		$this->set('data',array('',''));
		$this->set('busq','');
}
	}
	}

public function cambiar_correlativo_factura($codtiend=null, $numfac=null, $numcon=null, $codusu=null, $nuevo=null, $monto=null, $fecemi=null){

if(isset($codtiend) and isset($numfac) and isset($numcon) and isset($codusu) and isset($nuevo) and isset($monto) and isset($fecemi)){

	 $codtiend=$this->Interfaz->id($codtiend);
	 $numfac=$this->Interfaz->id($numfac);
	 $numcon=$this->Interfaz->id($numcon);
	 $codusu=$this->Interfaz->id($codusu);
	 $nuevo=$this->Interfaz->id($nuevo);
	 $monto=$this->Interfaz->id($monto);
	 $fecemi=$this->Interfaz->id($fecemi);
	 $array=array($codtiend);


    $sqlb=$this->Query->cambiar_correlativo_factura_select(trim($codtiend),trim($numfac),trim($numcon),trim($codusu),trim($nuevo),trim($monto),trim($fecemi));
		$datax=$this->Query->app('Sigesp',$array,$sqlb);
	if(count($datax)===1){
	//echo 'exito';
$nuevo=explode('-',$nuevo);
$numcon_=explode('-',$numcon);$numcon_=$numcon_[1];
$catnumcon = strlen($numcon_);
$nuevo=$nuevo[0].'-'.$this->Interfaz->item($nuevo[1],$catnumcon);



 $sqlbx=$this->Query->cambiar_correlativo_factura_update(trim($codtiend),trim($numfac),trim($numcon),trim($codusu),trim($nuevo),trim($monto),trim($fecemi));

$this->Vista->mensaje("$sqlbx",'ERROR');
$dataxc=$this->Query->app('Sigesp',$array,$sqlbx);

//	$datax[0]['numcon'];
	$cond=0;


	}
	else{

			 $this->Vista->mensaje('No se Puedo Procesar esta consulta','ERROR');
	$cond=1;
	}
//1719464

}
else{

		 $this->Vista->mensaje('No se Puedo Procesar error en datos de entrada','ERROR');

}


/*
echo '<br />'.$codtiend;
echo '<br />'.$numfac;
echo '<br />'.$numcon;
echo '<br />'.$codusu;
echo '<br />'.$nuevo;
echo '<br />'.$monto;
*/
		$this->set('cond',$cond);


  }






public function reporteadeor($busq=''){
	$this->permisos_menu_individual('REPORTEADOR'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
	$this->Vista->title('Listado de Reporteador');	
	$data=$this->ReporteSql->find('all',array("conditions"=>array("ReporteSql.id >"=>0)));
	$this->set('data',$data);
	$this->set('busq',$busq);
}

public function filtrado_reporteador(){	
	$this->Session->delete('opciones_reporteador');
	$this->Vista->title('Listado con Filtro de Reporteador');
	$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
	$tienda=array();
	foreach($tiendas as $key => $value) {
		$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
	}
	$this->set('tienda',$tienda);
}

function listado_filtrado_reporteador(){
	extract($this->request->data);
	$id_ven=$vent;
	$this->set('opciones',$this->serializador($this->request->data,2));
	$this->Session->write('opciones_reporteador',$this->serializador($this->request->data,2));
	$this->Vista->title('Listado de Resultado a Modificar');
	$data=null;
	$nombres=trim($nombres);
	$sql=trim($sql);
	$titulo=trim($titulo);
	if(empty($sql) or empty($nombres) or empty($titulo)){
		$this->Vista->mensaje('Indique la sentencia sql, los titulos del reporte y el Nombre del Reporte','ERROR');
		$this->set('tienda',null);	
		$this->set('data',null);
		$this->set('busq','');$this->set('mostrar','0');
	}
	else{
		$titulos = explode(',',$nombres);
		$this->set('titulos',$titulos);
		if(in_array('TODOS',$this->request->data['tienda'])){
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));		
			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else{
			$array=$this->request->data['tienda'];
		}
		if($tipo==1){//$data=$this->Query->app('Sigesp',$array,$sql);
		}
		else{//$data=$this->Query->app_tienda('Sigesp',$array,$sql);
		}
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));	
		$this->set('tienda',$td);$this->set('tienda_buscar',$array);	
		$this->set('data',null);$this->set('tipo',$tipo);
		$this->set('busq','');$this->set('mostrar','1');
		$this->Vista->mensaje('Reporte Disponible','INFORMACION');
		/*if(count($data)>0){
		 $this->Vista->cerrar_ventana($id_ven);
		}
		else{
			$this->Vista->mensaje('NO SE ENCONTRARON DATOS PARA LA CONSULTA','INFORMACION');	
		}*/
	}
	
}

function reporte_excel_reporteador($t_exel){
	$this->set('t_exel',$t_exel);
	$this->request->data=$this->serializador($this->Session->read('opciones_reporteador'),1); //1 convierte la cadena serializada en un arreglo
	if(is_array($this->request->data)){
		extract($this->request->data);
		$titulos = explode(',',$nombres);
		$this->set('titulos',$titulos);
		if(in_array('TODOS',$this->request->data['tienda'])){
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));		
			$array=array();
			for($z=0; $z<count($tienda); $z++){
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else{
			$array=$this->request->data['tienda'];
		}
		if($tipo==1){$data=$this->Query->app('Sigesp',$array,$sql);}
		else{$data=$this->Query->app_tienda('Sigesp',$array,$sql);}
		//pr($data);
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));	
		$this->set('tienda',$td);$this->set('tienda_buscar',$array);	
		$this->set('data',$data);$this->set('tipo',$tipo);
		$this->set('titulo',$titulo);
	}
	else
	{
		$this->Vista->mensaje('ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA','INFORMACION');
	}
}
//agencia,cod_articulo,nom_articulo,clasificacion,sub_clasificacion,existencia,costo,costo_existencia
public function guardar_sql() {
	$this->request->data=$this->serializador($this->Session->read('opciones_reporteador'),1);
	if(is_array($this->request->data)){
		extract($this->request->data);
		$sql=str_replace("'", "/c/", $sql);
		$sql=str_replace('"', "/dc/", $sql);
		$sql=str_replace(';', "/pc/", $sql);
		$sql=str_replace('--', "/dg/", $sql);
		$tienda=implode(',', $tienda);
		if(isset($id_sql)){
			$id=$this->Interfaz->id($id_sql);
			$datos['ReporteSql']['id']=$id;
		}
		$datos['ReporteSql']['sql']=$sql;
		$datos['ReporteSql']['nombre']=$titulo;
		$datos['ReporteSql']['titulos']=$nombres;
		$datos['ReporteSql']['tiendas']=$tienda;
		$datos['ReporteSql']['tipo']=$tipo;
		if($this->ReporteSql->save($datos)){
			$this->Vista->mensaje('SENTENCIA SQL GUARDADA XITOSAMENTE','EXITO');
		}
		else{
			$this->Vista->mensaje('ERROR GUARDANDO SENTENCIA SQL','ERROR');
		}
	}
	else{		
		$this->Vista->mensaje('ESTAS INTENTANDO VIOLAR LA SEGURIDAD AGROPATRIA','INFORMACION');
	}
	$this->reporteadeor();
	$this->render('reporteadeor');	
}

public function ver_reporte_sql($tipo,$id=null){	
	$this->Session->delete('opciones_reporteador');
	$this->Vista->title('Listado con Filtro de Reporteador');
	$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
	$tienda=array();
	
	foreach($tiendas as $key => $value) {
		$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
	}
	$this->set('tienda',$tienda);

	$id=$this->Interfaz->id($id);
	$data=$this->ReporteSql->find('first',array('conditions'=>array('ReporteSql.id'=>$id)));
	$this->set('data',$data); $this->set('tipo',$tipo);	
}





function listado_replicas_de_precios(){		
	$this->permisos_menu_individual('REPLICA DE PRECIOS'); ///BUSCA LOS PERMISOS QUE SE UTILIZARAN EN LA VISTA
	$this->Vista->title('Listado de Replica de Precios Pendientes');
	$this->bloquear_buscador(2);
	$data=$this->ArchivoPrecios->find('all',array('conditions'=>array('ArchivoPrecios.id > '=>0)));
	$this->set('data',$data);
	$this->set('busq','');
	//$this->log();
}
public function upload_replica_de_precios($div='vista',$divlistado='vista'){	
	$this->set('div',$div);
	$this->set('divlistado',$divlistado);
	$this->Vista->title('Subir Archivo Replica de Precios');
}
public function subir_replica_de_precios(){
	$this->Vista->title('Subir Archivos Replica de Precios');
	$this->bloquear_buscador();
}

public function nuevo_replica($div='vista',$divlistado='vista'){	
	$this->Vista->title('Filtro de Replica de Precios');
	$this->set('div',$div);
	$this->set('divlistado',$divlistado);
	$tiendas=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo Asc'));
	$tienda=array();
	$tienda['TODOS']='Todas las Tiendas';
	foreach ($tiendas as $key => $value) 
	{
		$tienda[$value['Tienda']['codigo']]=$value['Tienda']['codigo'].' - '.$value['Tienda']['nombre'];
	}
	$this->set('tienda',$tienda);
}

public function listado_filtrado_replica_precio(){
	$this->request->data['ruta']=ROOT.DS.WEBROOT_DIR.DS."files".DS;
	$compactada=$this->serializador($this->request->data,2); //2 serializa el arreglo
	$this->set('opciones',$compactada);
	$data=$this->request->data;
	extract($this->request->data);
	$id_ven=$this->request->data['vent'];
	$fi=$this->request->data['fecha_i'];
	$vfi=$$fi;
	$ff=$this->request->data['fecha_f'];
	$vff=$$ff;
	$error=0;
	if($tipo==1){
		if($this->Vista->empyt($data,array('hfin',$ff))){
			$error=1;
		}
	}
	else if($tipo==2){
		if($this->Vista->empyt($data)){
			$error=1;
		}
	}
	else{
		if($this->Vista->empyt($data)){
			$error=1;
		}
	}

	if($error==1){
		$this->Vista->mensaje('Faltan Datos que son Requeridos','ALERTA');
		$this->set('tienda',null);
		$this->set('data',null);
		$this->set('busq','');
		$this->set('archivo',null);
		$this->set('busq','');
		$this->set('ruta',null);
		//$this->set('mostrar',1); // Indica a mensaje que monte el menu superior sin acciones
		//$this->render("../".PRINCIPAL."/mensajes");	
	}
	else{
		if(empty($vfi) and empty($vff)){
			$vfi=null;	$vff=null;
		}
		else if(!empty($vfi) and empty($vff)){
			$vfiv=$vfi;$vffv=$vfi;
			$vfi=$this->Utilitario->guar_fecha($vfi);	$vff=$vfi;
		}
		else if(empty($vfi) and !empty($vff)){
			$vfiv=$vff;$vffv=$vff;
			$vff=$this->Utilitario->guar_fecha($vff); $vfi=$vff;
		}
		else{
			$vfiv=$vff;$vffv=$vff;
			if($this->diferencias_dias($this->Utilitario->guar_fecha($vfi),$this->Utilitario->guar_fecha($vff))<0){
				$a_=$vfi;$vfi=$this->Utilitario->guar_fecha($vff);$vff=$this->Utilitario->guar_fecha($a_);
			}
			else{
				$vfi=$this->Utilitario->guar_fecha($vfi);$vff=$this->Utilitario->guar_fecha($vff);
			}	
		}
		if($tipo==2){
			if(in_array('TODOS',$this->request->data['tienda'])){
				$error=1;
				$msj="Las Replica de Contingencia no puede aplicar a todas las tienda";
			}
			else{
				$fhi= "$vfiv $hinicio";
				$fhf= "$vffv $hfin";
				$f1=strtotime($fhi);
				$f2=strtotime($fhf);
				
				if($f2-$f1<1){
					$error=1;
					$msj="Las fechas son incorrectas";
				}
			}
			
		}
		
		$td=$this->Tienda->find('list', array('fields'=> array('Tienda.codigo', 'Tienda.nombre'), 'order'=>'Tienda.id Asc'));		
		/*if(in_array('TODOS',$this->request->data['tienda']))
		{
			$array=$this->request->data['tienda'];
			$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
			$array=array();
			for($z=0; $z<count($tienda); $z++)
			{
				$array[]=$tienda[$z]['Tienda']['codigo'];
			}
		}
		else
		{
			$array=$this->request->data['tienda'];
		}*/
		$array=$this->request->data['tienda'];
		if($error==1){
			$this->Vista->mensaje($msj,'ALERTA');
			$this->set('tienda',null);
			$this->set('data',null);
			$this->set('busq','');
			$this->set('archivo',null);
			$this->set('busq','');
			$this->set('ruta',null);
			//$this->set('mostrar',1); // Indica a mensaje que monte el menu superior sin acciones
			//$this->render("../".PRINCIPAL."/mensajes");	
		}
		else{
			$this->set('tienda_listado',$td);
			$this->set('tienda',$array);
			$this->set('fecha_i',$vfi);
			$this->set('hinicio',$data['hinicio']);
			$this->set('fecha_f',$vff);
			$this->set('hfin',$data['hfin']);
			$this->set('tipo',$data['tipo']);
			$this->set('archivo',$data['archivo']);
			$this->set('busq','');
			$this->set('ruta',ROOT.DS.WEBROOT_DIR.DS."files".DS);
			$ad='files/'.$archivo;
			chmod('files/'.$archivo,  0777);
			$this->Vista->title('Listado de Precios a Replicar');
		}		
		//$this->Vista->cerrar_ventana($id_ven);	
	}

}

public function procesar_archivo_lista_precio(){
	$data=$this->serializador($this->request->data['opciones'],1); //1 convierte la cadena serializada en un arreglo
	extract($data);
	$fi=$data['fecha_i'];
	$vfi=$this->Utilitario->guar_fecha($$fi);
	$ff=$data['fecha_f'];
	$vff=$$ff;
	$arch=$data['ruta'].$data['archivo'];
	$fi=$vfi.' '.$data['hinicio'];
	$tiendas_final=implode(",",$data['tienda']);
	$oid=$this->ArchivoPrecios->importar($arch);
	$nom_nue=str_replace("_", " ", $data['archivo']);
	$nom_nue=explode(' ',$nom_nue);
	unset($nom_nue[0]);
	$nom_nue=implode(' ', $nom_nue);
	if($data['tipo']==1){
		$tiplista='N';
	} 
	else{
		$tiplista='C';
		$tiplista2='R';
		$nomb_aux="Restauracion ".$nom_nue;
		$ff=$this->Utilitario->guar_fecha($vff).' '.$data['hfin'];
		$sql2="INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,tiendas,tiplista) 
		VALUES('".$nomb_aux."','now()','N',lo_import('$arch'),'$ff','$tiendas_final','R');";
		$datos2['nomarch']=$nomb_aux;
		$datos2['fecarch']='now()';
		$datos2['staarch']='N';
		$datos2['objarchxls']=$oid;
		$datos2['fecinicio']=$ff;
		$datos2['tiendas']=$tiendas_final;
		$datos2['tiplista']='R';
		$datos2['nombre_fuente']=$data['archivo'];
	} 
	if(isset($vff) and isset($data['hfin']) && $data['tipo']!=1){
		$ff=$this->Utilitario->guar_fecha($vff).' '.$data['hfin'];
		$sql="INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,fecfin,tiendas,tiplista) 
		VALUES('".$data['archivo']."','now()','N',lo_import('$arch'),'$fi','$ff','$tiendas_final','$tiplista');";
		$datosf['nomarch']=$nom_nue;
		$datosf['fecarch']='now()';
		$datosf['staarch']='N';
		$datosf['objarchxls']=$oid;
		$datosf['fecinicio']=$fi;
		$datosf['fecfin']=$ff;
		$datosf['tiendas']=$tiendas_final;
		$datosf['tiplista']=$tiplista;
		$datosf['nombre_fuente']=$data['archivo'];
	}
	else{
		$sql="INSERT INTO pre_archivo_precios(nomarch,fecarch,staarch,objarchxls,fecinicio,tiendas,tiplista) 
		VALUES('".$data['archivo']."','now()','N',lo_import('$arch'),'$fi','$tiendas_final','$tiplista');";
		$datosf['nomarch']=str_replace("_", " ", $data['archivo']);
		$datosf['fecarch']='now()';
		$datosf['staarch']='N';
		$datosf['objarchxls']=$oid;
		$datosf['fecinicio']=$fi;
		$datosf['tiendas']=$tiendas_final;
		$datosf['tiplista']=$tiplista;
		$datosf['nombre_fuente']=$data['archivo'];
	}
	
	$this->ArchivoPrecios->query('BEGIN  WORK');
	$this->PreArchivoPrecios->query('BEGIN  WORK');
	//$this->PrePrecioArticulos->query($sql);
	$df['ArchivoPrecios']=$datosf;
	if($this->ArchivoPrecios->save($df)){
		$ban=1;
		$id_archivo=$this->ArchivoPrecios->id;
		$datosf['id_original']=$id_archivo;
		$df2['PreArchivoPrecios']=$datosf;
		if($this->PreArchivoPrecios->saveall($df2)){
			$id_archivo_foraneo=$this->PreArchivoPrecios->id;
			if($data['tipo']==2){
				//$this->PrePrecioArticulos->query($sql2);
				$df=null;
				$df['ArchivoPrecios']=$datos2;
				if($this->ArchivoPrecios->saveall($df)){
					$id_archivo2=$this->ArchivoPrecios->id;
					$datos2['id_original']=$id_archivo2;
					$df2=null;
					$df2['PreArchivoPrecios']=$datos2;
					if($this->PreArchivoPrecios->saveall($df2)){
						$id_archivo2foraneo=$this->PreArchivoPrecios->id;
					}
					else{
						$ban=0;
					}
				}
				else{
					$ban=0;
				}
			}
			if($ban){
			$datapre=$this->serializador($this->request->data['datos'],1); //1 convierte la cadena serializada en un arreglo
			if(in_array('TODOS',$data['tienda'])){
				/*$tienda=$this->Tienda->find('all',array("conditions"=>array("Tienda.estatus "=>1,"Tienda.central"=>0),'order'=>'codigo desc'));
				$array=array();
				for($z=0; $z<count($tienda); $z++)
				{
					$array[]=$tienda[$z]['Tienda']['codigo'];
				}*/
				$array=$data['tienda'];
			}
			else{
				$array=$data['tienda'];
			}
			//pr($datapre);
			for($j=0; $j < count($array); $j++){
				$cod_tienda=$array[$j];
				foreach ($datapre as $valor){
					foreach($valor as $linea){
						if($linea['error_msg']==1){
							if($cod_tienda=='TODOS') $cod_buscar='T001';
							else $cod_buscar=$cod_tienda;
							$cod_lapzo=$this->Query->app('Sigesp', array($cod_buscar),"select codlapso from sfc_lapso where dias_lapso='".$linea['lapzo']."'");
							if(isset($cod_lapzo[0]['codlapso']) && count($cod_lapzo)>0){
				    			$lapzo=$cod_lapzo[0]['codlapso'];
				    			$pre_aux=$this->Integrador->query("select interfaces.fnc_consulta_precios('{$cod_tienda}','{$linea['codigo']}', '$lapzo','{$linea['cliente']}','{$linea['programa']}') as precio");
				    			$d=NULL;
							    $d['PrecioArticulos']['idarch']=$id_archivo;
								$d['PrecioArticulos']['codart']=$linea['codigo'];
								$d['PrecioArticulos']['codtipocli']=$linea['cliente'];
								$d['PrecioArticulos']['codlapso']=$lapzo;
								$d['PrecioArticulos']['codpro']=$linea['programa'];
								$d['PrecioArticulos']['precio']=$linea['precio'];
								$d['PrecioArticulos']['tiplista']=$tiplista;
								$d['PrecioArticulos']['codtiend']=$cod_tienda;
								$d['PrecioArticulos']['fecejec']=$fi;
								$d['PrecioArticulos']['stareg']='N';
								$d['PrecioArticulos']['create']='now()';
								$d['PrecioArticulos']['precio_antiguo']=$pre_aux[0][0]['precio'];
								pr($d);
								if($this->PrecioArticulos->saveall($d)){
									$d2=NULL;
								    $d2['PrePrecioArticulos']['idarch']=$id_archivo_foraneo;
									$d2['PrePrecioArticulos']['codart']=$linea['codigo'];
									$d2['PrePrecioArticulos']['codtipocli']=$linea['cliente'];
									$d2['PrePrecioArticulos']['codlapso']=$lapzo;
									$d2['PrePrecioArticulos']['codpro']=$linea['programa'];
									$d2['PrePrecioArticulos']['precio']=$linea['precio'];
									$d2['PrePrecioArticulos']['tiplista']=$tiplista;
									$d2['PrePrecioArticulos']['codtiend']=$cod_tienda;
									$d2['PrePrecioArticulos']['fecejec']=$fi;
									$d2['PrePrecioArticulos']['stareg']='N';
									$d2['PrePrecioArticulos']['create']='now()';
									$d2['PrePrecioArticulos']['precio_antiguo']=$pre_aux[0][0]['precio'];
									pr($d2);
									if($this->PrePrecioArticulos->saveall($d2)){
										if($data['tipo']==2){
										//	$pre_aux=$this->Integrador->query("select interfaces.fnc_consulta_precios('{$cod_tienda}','{$linea['codigo']}', '$lapzo','{$linea['cliente']}','{$linea['programa']}') as precio");
											$d=NULL;
										    $d['PrecioArticulos']['idarch']=$id_archivo2;
											$d['PrecioArticulos']['codart']=$linea['codigo'];
											$d['PrecioArticulos']['codtipocli']=$linea['cliente'];
											$d['PrecioArticulos']['codlapso']=$lapzo;
											$d['PrecioArticulos']['codpro']=$linea['programa'];
											$d['PrecioArticulos']['precio']=$pre_aux[0][0]['precio'];
											$d['PrecioArticulos']['tiplista']=$tiplista2;
											$d['PrecioArticulos']['codtiend']=$cod_tienda;
											$d['PrecioArticulos']['fecejec']=$ff;
											$d['PrecioArticulos']['stareg']='N';
											$d['PrecioArticulos']['create']='now()';
											$d['PrecioArticulos']['precio_antiguo']=$linea['precio'];
											if($this->PrecioArticulos->saveall($d)){
												$d2=NULL;
											    $d2['PrePrecioArticulos']['idarch']=$id_archivo2foraneo;
												$d2['PrePrecioArticulos']['codart']=$linea['codigo'];
												$d2['PrePrecioArticulos']['codtipocli']=$linea['cliente'];
												$d2['PrePrecioArticulos']['codlapso']=$lapzo;
												$d2['PrePrecioArticulos']['codpro']=$linea['programa'];
												$d2['PrePrecioArticulos']['precio']=$pre_aux[0][0]['precio'];
												$d2['PrePrecioArticulos']['tiplista']=$tiplista2;
												$d2['PrePrecioArticulos']['codtiend']=$cod_tienda;
												$d2['PrePrecioArticulos']['fecejec']=$ff;
												$d2['PrePrecioArticulos']['stareg']='N';
												$d2['PrePrecioArticulos']['create']='now()';
												$d2['PrePrecioArticulos']['precio_antiguo']=$linea['precio'];
												if($this->PrePrecioArticulos->saveall($d2)){
													$ban*=1;
												}
												else{
													$ban*=0;
													break;
												}
											}
											else{
												$ban*=0;
												break;
											}
										}
										else{
											$ban*=1;
										}
									}
									else{
										$ban*=0;
										break;
									}	
								}
								else{
									$ban*=0;
									break;
								}
				    		}
						}
					} 
				}
			}
		}

		}
		else{
			$this->ArchivoPrecios->query('ROLLBACK');
			$this->PreArchivoPrecios->query('ROLLBACK');
		}
	}
	else{
		$this->ArchivoPrecios->query('ROLLBACK');
		$this->PreArchivoPrecios->query('ROLLBACK');
	}

	if($ban==1){
		$this->log();
		$this->ArchivoPrecios->query('COMMIT');
		$this->PreArchivoPrecios->query('COMMIT');

		$this->Vista->mensaje('Archivo Subido Exitosamente','Exito');
		$this->Vista->cerrar_ventana($vent);
	}
	else{
		$this->ArchivoPrecios->query('ROLLBACK');
		$this->PreArchivoPrecios->query('ROLLBACK');
		$this->Vista->mensaje('Ocurrio un error al Subir el Archivo','ALERTA');
	}
	$this->listado_replicas_de_precios();
	$this->render("listado_replicas_de_precios");	
}

function listado_replicas_de_precios_ver($div='vista',$divlistado='vista',$id_archivo=null) 
{
	if(isset($id_archivo)){
		$id_archivo=$this->Interfaz->id($id_archivo);
		$this->Vista->title('Listado de Replica de Precios Pendientes');
		$this->set('div',$div);
		$this->set('divlistado',$divlistado);
		$dat=$this->ArchivoPrecios->find('first',array('conditions'=>array('ArchivoPrecios.id'=>$id_archivo)));
    	$this->set('data_archivo',$dat);
    	
    	$ruta="/var/www/sistemas/sisgespdesarrollo/www/files/descargables";

    	$sql="select distinct codart,codpro from precio_articulos where idarch='$id_archivo' order by codart";
    	$articulos=$this->PrecioArticulos->query($sql);
    	$sql="select distinct codlapso,codtipocli from precio_articulos where idarch='$id_archivo' order by codtipocli,codlapso";
    	$precios=$this->PrecioArticulos->query($sql);
    	$precios_final=array();
    	for($y=0;$y< count($precios);$y++){
    		$cod_lapzo=$this->Query->app('Sigesp', array('T001'),"select dias_lapso from sfc_lapso where codlapso='".$precios[$y][0]['codlapso']."'");
    		$precios_final[$y][0]['codlapso']=$cod_lapzo[0]['dias_lapso'];
    		$precios_final[$y][0]['codtipocli']=$precios[$y][0]['codtipocli'];
    	}
    	$datos=array();
    	for($i=0;$i<count($articulos);$i++){
    		$codi=$articulos[$i][0]['codart'];
    		$codp=$articulos[$i][0]['codpro'];
    		for($j=0;$j<count($precios);$j++){
    			$lapzo=$precios[$j][0]['codlapso'];
    			$cli=$precios[$j][0]['codtipocli'];
    			$sql="select codart,codtipocli,codlapso,codpro,precio from precio_articulos where idarch='$id_archivo' and codpro='$codp' and codart='$codi' and codlapso='$lapzo' and codtipocli='$cli' limit 1";
    			$res=$this->PrecioArticulos->query($sql);
    			$datos[$i][$j]=$res[0][0];
    		}				
    	}	    	
    	$this->set('precios',$precios_final);
    	$this->set('data',$datos);
		$this->set('busq','');
		$this->log();
	}
	else{
		$this->set('data_archivo',null);
    	$this->set('data',null);
		$this->set('busq','');
	}
}

function excutar_replicas_de_precios($id_archivo=null){
	if(isset($id_archivo)){
		$id_archivo=$this->Interfaz->id($id_archivo);
		$this->Vista->title('Ejecutar de Replica de Precios Pendiente');

		$dat=$this->ArchivoPrecios->find('first',array('conditions'=>array('ArchivoPrecios.id'=>$id_archivo,'ArchivoPrecios.staarch'=>'N')));
	    if(count($dat)>0){
	    	$msj="Ocurrio un Error Ejecutando Replica";
	    	$this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='E' WHERE id=$id_archivo");
	    	$pre_aux=$this->Integrador->query("select interfaces.fnc_ejecucion_precios($id_archivo) as resultado");
	    	$this->PreArchivoPrecios->query("UPDATE pre_archivo_precios set staarch='E' WHERE id_original=$id_archivo");   	
	    	$this->log();  	
			if($pre_aux[0][0]['resultado']){//$pre_aux
				$this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='L' WHERE id=$id_archivo");
				$this->PreArchivoPrecios->query("UPDATE pre_archivo_precios set staarch='L' WHERE id_original=$id_archivo");
				$this->log();
				$msj="Replica Ejecutada sastifactoriamente";
			}
			else{
				$this->ArchivoPrecios->query("UPDATE archivo_precios set staarch='N' WHERE id=$id_archivo");
			}
	    	$this->Vista->mensaje($msj,'Informacion');   			    	
	    }
	    else{
	    	$this->Vista->mensaje('La replica esta siendo Ejecutada en este Instante, o ya Fue Ejecutada!!!','Informacion');
	    }
	}		
	$this->listado_replicas_de_precios();
	$this->render('listado_replicas_de_precios');
}

function anular_replicas_de_precios($id_archivo=null){
	if(isset($id_archivo)){
		$id_archivo=$this->Interfaz->id($id_archivo);
		$dat=$this->ArchivoPrecios->find('first',array('conditions'=>array('ArchivoPrecios.id'=>$id_archivo,'ArchivoPrecios.staarch'=>'N')));
	    if(count($dat)>0){
	    	$sql="UPDATE archivo_precios set staarch='A', estatus='3' where id=$id_archivo";
	    	$this->ArchivoPrecios->Query($sql);
	    	$sql="UPDATE pre_archivo_precios set staarch='A' where id_original=$id_archivo";
	    	$this->PreArchivoPrecios->Query($sql);
	    	$this->log();
	    	$this->Vista->mensaje('Archivo Anulado Exitosamente','Exito');
	    }
	    else{
	    	$this->Vista->mensaje('No se encontro el Archivo Para Anular','Error');
	    }
	}
	$this->listado_replicas_de_precios();
	$this->render('listado_replicas_de_precios');
}

function bajar_archivo_replica_precios($archivo,$nombre){
	if(!empty($archivo)){
		$nombre=str_replace(" ", "_", $nombre);
		$this->set('ruta',ROOT.DS.WEBROOT_DIR.DS."files".DS.$archivo);
		$this->set('nombre',$nombre);
	}else{
		$this->set('ruta',null);
		$this->set('nombre',null);
	}
}



}//class
?>
